﻿#region Copyrights

/*
    - - - - - - - - - - - - - - - - - - - - - - -
    Nome do Arquivo : Attributes.cs
    - - - - - - - - - - - - - - - - - - - - - - -

    Sistema				    :  	LLS.Core
    Modulo				    :  	LLS.DataModel.Core
    Autor				    :	Leonardo L. de Siqueira
    Data					:	27/02/2012
    Descrição  				:	Classes de atributos utilizados pelos modelos de dados.
    
*/

#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace LLS.DataModel.Core
{
    /// <summary>
    /// Atributo para define o nome da tabela a qual o modelo de dados está relacionado
    /// </summary>
    [System.AttributeUsage(System.AttributeTargets.Class)]
    public class TableAttribute : Attribute
    {
        #region Properties
        
        /// <summary>
        /// Resgata / define o nome da tabela no banco de dados
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Resgata / define se a tabela não será auditada
        /// </summary>
        public bool NotAudit { get; set; }

        #endregion
    }

    /// <summary>
    /// Atributo para define o nome da coluna a qual a propriedade do modelo de dados está relacionada e se é chave primária
    /// </summary>
    [System.AttributeUsage(System.AttributeTargets.Property)]
    public class ColumnAttribute : Attribute
    {
        #region Properties

        /// <summary>
        /// Resgata / define o nome da coluna no banco de dados
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Resgata / define o tipo da coluna no banco de dados
        /// </summary>
        public DbType Type { get; set; }

        /// <summary>
        /// Resgata / define o tamanho da coluna no banco de dados
        /// </summary>
        public int Size { get; set; }

        /// <summary>
        /// Resgata / define se a coluna é do tipo PrimaryKey no banco de dados
        /// </summary>
        public bool PrimaryKey { get; set; }

        /// <summary>
        /// Resgata / define se a coluna é pode ou não conter valores nulos no banco de dados
        /// </summary>
        public bool NotNull { get; set; }

        /// <summary>
        /// Resgata / define se a coluna não será auditada
        /// </summary>
        public bool NotAudit { get; set; }

        public bool Identity { get; set; }

        #endregion
    }
}
